 /* 
  Via ce script vous spécifiez que l'email doit : 
  - contenir une arobase et un point 
  - avant la présence de l'arobase nous pouvons trouver, des lettres quelconques 
      (en minuscule ou majuscule), n'importe quel chiffre, et les caractères "-" ou "_" 
  - aprés l'arobase, la vérification reste la même mais on interdit la présence de "_" 
      et il faut impérativement au moins de caractères entre l'arobase et le point 
  - aprés le point, nous devons une succession de 2 ou 3 caractères doivent être 
      présentes afin de pouvoir valider l'adresse email.     
*/ 
         
function chkmail(field) { 
	var email = new String(field.value); 
	var verif = new RegExp("^[a-zA-Z0-9_\\-\\.]{2,}@[a-zA-Z0-9\\-\\._]{2,}(\\.[a-zA-Z]{2,4})$", "gi");

	if(!verif.test(email)) {
		return 0;
	} else {
		return 1;
	}

} 

function MailValide(emailvalue) { 
		var verif = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]{1,}[.][a-zA-Z]{2,}$/ 
	// 	var mailExp = new RegExp('\\s*[\\w-.]{1,}@[\\w-.]{2,}[.][a-zA-Z]{2,}');
		if (verif.exec(emailvalue) == null) return false;
		else return true; 
} 

function checkValidation ( addressField ) {
    if ( stringEmpty ( addressField.value ) )
        return ( "Veuillez saisir une adresse e-mail" );
    else if ( noAtSign ( addressField.value ) )
        return ( "L'adresse e-mail saisie ne contient pas de '@'" );
    else if ( nothingBeforeAt ( addressField.value ) )
        return ( "L'adresse e-mail doit comporter au moins un caractère avant le '@'" );
    else if ( noLeftBracket ( addressField.value ) )
        return ( "Attention, à chaque crochet fermant ']' doit correspondre un crochet ouvrant '['" );
    else if ( noRightBracket ( addressField.value ) )
        return ( "Attention, à chaque crochet ouvrant '[' doit correspondre un crochet fermant ']'" );
    else if ( noValidPeriod ( addressField.value ) )
        return ( "Error! An E-Mail address must contain a period ('.') character" );
    else if ( noValidSuffix ( addressField.value ) )
        return ( "Error! An E-Mail address must contain a two or three character suffix" );
    else
        return ("");
}

function CheckMail ( formField ) {
	return ( checkValidation ( formField ) );
}

function stringEmpty ( address ) {
    // CHECK THAT THE STRING IS NOT EMPTY
    if ( address.length < 1 ) {
        return ( true );
    } else {
        return ( false );
    }
}

function noAtSign ( address ) {
    // CHECK THAT THERE IS AN '@' CHARACTER IN THE STRING
    if ( address.indexOf ( '@', 0 ) == -1 ) {
        return ( true )
    } else {
        return ( false );
    }
}

function nothingBeforeAt ( address ) {
    // CHECK THERE IS AT LEAST ONE CHARACTER BEFORE THE '@' CHARACTER
    if ( address.indexOf ( '@', 0 ) < 1 ) {
        return ( true )
    } else {
        return ( false );
    }
}

function noLeftBracket ( address ) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR LEFT BRACKET
    if ( address.indexOf ( '[', 0 ) == -1 && address.charAt ( address.length - 1 ) == ']' ) {
        return ( true )
    } else {
        return ( false );
    }
}

function noRightBracket ( address ) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR RIGHT BRACKET
    if ( address.indexOf ( '[', 0 ) > -1 && address.charAt ( address.length - 1 ) != ']' ) {
        return ( true );
    } else {
        return ( false );
    }
}

function noValidPeriod ( address ) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
    if ( address.indexOf ( '@', 0 ) > 1 && address.charAt ( address.length - 1 ) == ']' )
        return ( false );

    // CHECK THAT THERE IS AT LEAST ONE PERIOD IN THE STRING
    if ( address.indexOf ( '.', 0 ) == -1 )
        return ( true );

    return ( false );
}

function noValidSuffix ( address ) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
    if ( address.indexOf ( '@', 0 ) > 1 && address.charAt ( address.length - 1 ) == ']' )
        return ( false );

    // CHECK THAT THERE IS A TWO OR THREE CHARACTER SUFFIX AFTER THE LAST PERIOD
    var len = address.length;
    var pos = address.lastIndexOf ( '.', len - 1 ) + 1;
    if ( ( len - pos ) < 2 || ( len - pos ) > 3 ) {
        return ( true );
    } else {
        return ( false );
    }
}

