/****************************************************
*           		GENERAL							*
****************************************************/

function fermerPopup() {
	window.close();
}

/****************************************************
*           		CONTROLES						*
****************************************************/

var messageErreur="";
var erreur = 0;

function checkFormDossier() {
	if (erreur == 1) {
		return false ;
	}
	return true;
}

function printErreurs() {
	alert(messageErreur);
	messageErreur="";
	erreur = 0;
}

function isMandatory(nomChamp, message) {
	var valeurChamp = nomChamp.value;
	if(valeurChamp == null || trim(valeurChamp).length < 1) {
		erreur = 1;
		messageErreur = messageErreur + message + "\n";
	}
}

function checkLength(nomChamp, longueurMax, message) {
	var valeurChamp = nomChamp.value;
	if(valeurChamp != null && valeurChamp.length > longueurMax) {
		erreur = 1;
		messageErreur = messageErreur + message + "\n";
	}

}

/****************************************************
*           VERIFICATION TYPE DONNEES				*
****************************************************/

var NUMBER_TYPE_INTEGER = 1 ;

var TYPE_ALL = 0 ;
var TYPE_NUMBER = 1 ;
var TYPE_ALPHA  = 2 ;
var TYPE_ALPHA_NUMERIC = 3 ;
var TYPE_EMAIL  = 4;
var TYPE_NOM_PRENOM = 5;
var TYPE_FLOAT = 6;
var TYPE_FLOAT_NEGATIF = 7;

function getCharacterValue(event){
	if(event.which){
		return event.which ;
	}else {
		if(window.event){ // IE
			return event.keyCode;
		}
	}
	return null;
}

function checkDefault(character){
	if( character == 8 ) {
		return true ;
	}
	return false;
}

function checkNumeric(character){
	if( checkDefault(character)){
		return true ;
	}
	if( character >= '0'.charCodeAt(0) && character <= '9'.charCodeAt(0) ) {
		return true ;
	}

	return false;
}

function checkAlpha(character){
	if( checkDefault(character)){
		return true ;
	}
	// lettre miniscule
	if( character >= 'a'.charCodeAt(0) && character <= 'z'.charCodeAt(0)) {
		return true ;
	}
	// lettre majuscule
	if( character >= 'A'.charCodeAt(0) && character <= 'Z'.charCodeAt(0)) {
		return true ;
	}
	return false;
}

function checkNomPrenom(character){

	if( checkAlpha(character) || checkNumeric(character)){
		return true ;
	}
	if(character == 'é'.charCodeAt(0)
			|| character == 'è'.charCodeAt(0)
			|| character == 'à'.charCodeAt(0)
			|| character == 'ç'.charCodeAt(0)
			|| character == '-'.charCodeAt(0)
			|| character == '_'.charCodeAt(0)
			|| character == '\''.charCodeAt(0)
			|| character == ' '.charCodeAt(0)
	){
		return true;
	}

	return false;
}

function checkFloat(character){
	if ( checkNumeric(character) ){
		return true ;
	}
	if(character == '.'.charCodeAt(0)  ){
		return true ;
	}
	
	return false; 
}

function checkFloatNegatif(character){
	if ( checkNumeric(character) ){
		return true ;
	}
	if(character == '.'.charCodeAt(0)
		|| character == '-'.charCodeAt(0) ){
		return true ;
	}
	
	return false;
}

function checkAlphaNumeric(character){
	if( checkAlpha(character) || checkNumeric(character)){
		return true ;
	}
	return false;
}

function checkEmail(character){
	if( checkAlpha(character) || checkNumeric(character)){
		return true ;
	}
	if(character == '.'.charCodeAt(0)
			|| character == '@'.charCodeAt(0)
			|| character == '_'.charCodeAt(0)
			|| character == '-'.charCodeAt(0) ){
		return true;
	}

	return false;
}


function checkCharacter(event,valueType) {
	var characterIsOK=false;
	if(event) {

		var isCharacter = false;
		var character  ;
		if(event.which){
			character = event.which ;
			isCharacter = true ;
		}else {
			if(window.event){ // IE
				character = event.keyCode;
				isCharacter = true ;
			}
		}

		if( isCharacter ){
			switch ( valueType ){
				case TYPE_ALL : characterIsOK = true; break;
				case TYPE_NUMBER : characterIsOK = checkNumeric(character); break;
				case TYPE_ALPHA : characterIsOK = checkAlpha(character);break;
				case TYPE_ALPHA_NUMERIC  : characterIsOK = checkAlphaNumeric(character);break;
				case TYPE_EMAIL  : characterIsOK = checkEmail(character);break;
				case TYPE_NOM_PRENOM  : characterIsOK = checkNomPrenom(character);break;
				case TYPE_FLOAT  : characterIsOK = checkFloat(character);break;
				case TYPE_FLOAT_NEGATIF  : characterIsOK = checkFloatNegatif(character);break;

			}
			if(characterIsOK) {
				return true ;
			}else{
				if (event.stopPropagation){
					event.stopPropagation();
					event.preventDefault();
				}else if(typeof event.cancelBubble != undefined){
					event.cancelBubble = true;
					event.returnValue = false;
				}
				return false;
			}
		}else{
			return true;
		}
	}
	return false;
}



/****************************************************
*           		OUTILS							*
****************************************************/


// Supprime les espaces inutiles en début et fin de la chaîne passée en paramètre.
var regExpBeginning = /^\s+/;
var regExpEnd = /\s+$/;

function trim(aString) {
    return aString.replace(regExpBeginning, "").replace(regExpEnd, "");
}


/*
* un champ est-il numerique,
* et eventuellement avec un nombre determine de chiffres
* inputObj = l'objet champ du formulaire a tester
* dec = le nombre de chiffres requis, mettre 0 si aucun
* errorMess = le message d'erreur a afficher si false
*/
function verifNb(inputObj,dec,errorMess) {
    trim(inputObj.value);
    if (isNaN(inputObj.value)) {
       alert(errorMess);
       return false;
    }
    else {
    	if (dec>0) {
	      if ((inputObj.value.indexOf('.') == -1) && (inputObj.value.length == dec)) {
	        return true;
	      } else {
	        alert(errorMess);
	        return false;
	      }
      } else {
      	return true;
      }
    }
}

/*
* un champ est-il obligatoire
* inputObj = l'objet champ du formulaire a tester
* errorMess = le message d'erreur a afficher si false
*/
function fieldRequired(inputObj,errorMess) {
    trim(inputObj.value);
    if (inputObj.value.length<1) {
       alert(errorMess);
       return false;
    } else {
       return true;
    }
}

/*
* un champ contient-il bien une adresse email valide
*/
function verifEmail(inputObj) {
    var email = trim(inputObj.value);
    if (email.length==0) {
		return true;
	}
    if (email.search(/^[_a-z0-9-]+(.[_a-z0-9-]+)*[^._-]@[a-z0-9-]+(.[a-z0-9]{2,4})*$/) == -1)
    {
        alert (email + " : adresse e-mail invalide.");
        return false;
    }
    return true;
}


function controleEmail(email){
	exp = /^((\w+(\-\w+)*)*\.?(\w+(\-\w+)*))+@((\w+(\-\w+)*)*\.(\w+(\-\w+)*))+$/;
    return exp.test(email);
}



