/**
 * Validation que l'input contient un texte (lettre ou chiffre) valide
 * 
 * @param pInput l'input a controler
 * @param pMandatory boolean pour indiquer si une valeur doit etre presente
 * @return true si le controle à aboutit, false sinon
 */
function inputValueValidation(pInput, pMandatory) {
	return inputValidation(pInput, pMandatory, ".+");
}
/**
 * Validation que l'input contient un texte (lettre ou chiffre espace et _ ) valide
 * 
 * @param pInput l'input a controler
 * @param pMandatory boolean pour indiquer si une valeur doit etre presente
 * @return true si le controle à aboutit, false sinon
 */
function inputTextValidation(pInput, pMandatory) {
	return inputValidation(pInput, pMandatory, "^([a-zA-Z0-9éèàçêâëäîï]+ ?)+$");
}

/**
 * Validation que l'input contient nombre
 * 
 * @param pInput l'input a controler
 * @param pMandatory boolean pour indiquer si une valeur doit etre presente
 * @return true si le controle à aboutit, false sinon
 */
function inputNumberValidation(pInput, pMandatory) {
	return inputValidation(pInput, pMandatory, "^\\d+$");
}

/**
 * Validation que l'input contient un code postal vbalide
 * 
 * @param pInput l'input a controler
 * @param pMandatory boolean pour indiquer si une valeur doit etre presente
 * @return true si le controle à aboutit, false sinon
 */
function inputPostCodeValidation(pInput, pMandatory) {
	return inputValidation(pInput, pMandatory, "^\\d{5}$");
}

/**
 * Validation que l'input contient un numero de tel (francais) avec comme separateur possible l'espace, le tiret, le slash, les deux points
 * 
 * @param pInput l'input a controler
 * @param pMandatory boolean pour indiquer si une valeur doit etre presente
 * @return true si le controle à aboutit, false sinon
 */
function inputPhoneNumberValidation(pInput, pMandatory) {
	pInput.value=pInput.value.replace(/[-\/ ]/g,"");
	return inputValidation(pInput, pMandatory, "^\\d{10}$") ;
}

/**
 * Validation que l'input contient un email valide
 * 
 * @param pInput l'input a controler
 * @param pMandatory boolean pour indiquer si une valeur doit etre presente
 * @return true si le controle à aboutit, false sinon
 */
function inputMailValidation(pInput, pMandatory) {
	return inputValidation(pInput, pMandatory, "^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$");
}

/**
 * Validation que l'input contient un SIRET valide
 * 
 * @param pInput l'input a controler
 * @param pMandatory boolean pour indiquer si une valeur doit etre presente
 * @return true si le controle à aboutit, false sinon
 */
function inputSiretValidation(pInput, pMandatory) {
	return inputValidation(pInput, pMandatory, "^(CREATION)?(PARTICULIER)?(\\d{9}[ -]?\\d{5})?$");
}

/**
 * Fonction generique de validation d'input
 * 
 * si le controle n'aboutit pas l'input est surligné
 * 
 * @param pInput l'input a controler
 * @param pMandatory boolean pour indiquer si une valeur doit etre presente
 * @param pPattern l'expression reguliere que l'input doit valider
 * @return true si le controle à aboutit, false sinon
 */
function inputValidation(pInput, pMandatory, pPattern) {
	var oResult = true;
	if (!pMandatory && (pInput.value.length == 0)) {
		return true;
	}
	oResult = !pMandatory || pInput.value.length > 0;
	pRegExp = new RegExp(pPattern, "g");
	oResult = oResult && pRegExp.test(pInput.value);

	pInput.style.backgroundColor = (oResult ? "white" : "yellow");
	return oResult;
}