/* Contrôles de saisie en tous genres */


// test la valeur boolean de isOk
// si false, incrémente returnMessage avec errorMessage.
function runTestFunction(isOk, errorMessage, returnMessage) {
	if (!isOk) {
		if (returnMessage == "")
			returnMessage = "Les champs suivants sont obligatoires : \r\n ";
	   returnMessage = returnMessage + " - "  + errorMessage + "\r\n ";
	}
	return returnMessage;
}

function runTestFunction2(isOk, errorMessage, returnMessage) {
	if (isOk)
		returnMessage = returnMessage + errorMessage + "\r\n ";
	return returnMessage;
}

function runTestFunction3(isOk, errorMessage, returnMessage) {
	if (!isOk)
		returnMessage = returnMessage + " - " + errorMessage + "\r\n ";
	return returnMessage;
}


function isCodePostal(codePostal) {
	numValide = "0123456789";
	if (codePostal.length != 5)
		return false;
	
	for (var cptCodePostal = 0; cptCodePostal < 5; cptCodePostal++) {
		if (numValide.indexOf(codePostal.substr(cptCodePostal, 1)) == -1)
			return false;
	}

	if (codePostal.valueOf() < 1000)
		return false;
	return true;
}



// Test l'email
function isEmail(elm) {
	tmp = "" + elm.value;
	var nb = tmp.length;
	if (tmp.length > 1) {
		if (elm.value.indexOf(" ") + "" == "-1" && elm.value.indexOf("@") + "" != "-1" && (elm.value.lastIndexOf(".") > elm.value.indexOf("@")) && elm.value != "" && (elm.value.substr(nb-1,1) != ".")) 
	        return true;
	     else return false;
	} 
 	else 
	   return false;
}

// Test le numéro de téléphone fixe
function isTelephone(numTelephone) {
	numValide = "0123456789";
	separateurTelephone = " ";
	if (numTelephone.length != 14)
		return false;
	
	for (var cptTelephone = 0; cptTelephone < 14; cptTelephone++) {
		if ((cptTelephone == 2) || (cptTelephone == 5) || (cptTelephone == 8) || (cptTelephone == 11)) {
			if ((numTelephone.substr(cptTelephone, 1) != separateurTelephone))
				return false;
		} 
		else {
			if (numValide.indexOf(numTelephone.substr(cptTelephone, 1)) == -1)
				return false;
		}
	}
	return true;
}

// Vérification d'une date (avec l'aide des expressions régulières)
function isDate(dateSource) {
	if (testSrc(dateSource, "date")) {
		tabDate = dateSource.split('/');
		with (new Date(parseInt(tabDate[2], 10), parseInt(tabDate[1], 10) - 1, parseInt(tabDate[0], 10))) {
			return (getDate() == parseInt(tabDate[0], 10)) &&
				(getMonth() == parseInt(tabDate[1], 10) - 1) &&
				(getFullYear() == parseInt(tabDate[2], 10));
		}
	} 
	else
		return false;
}

// Comparaison de 2 dates
function compDate(dateA, dateB) {
	if ((isDate(dateA)) && (isDate(dateB))) {
		tabDateA = dateA.split('/');
		tabDateB = dateB.split('/');
		return new Date(parseInt(tabDateA[2], 10), parseInt(tabDateA[1], 10) - 1, parseInt(tabDateA[0], 10)) < new Date(parseInt(tabDateB[2], 10), parseInt(tabDateB[1], 10) - 1, parseInt(tabDateB[0], 10));
	} 
	else
		return false;
}


// test si un élément d'un boutonRadio est sélectionné.
function radio_button_checker(objRadio) {
	// set var radio_choice to false
	var radio_choice = false;
	// Loop from zero to the one minus the number of radio button selections
	for (counter = 0; counter < objRadio.length; counter++) {
		// If a radio button has been selected it will return true
		// (If not it will return false)
		if (objRadio[counter].checked)
			radio_choice = true; 
	}
	if (!radio_choice) {
		// If there were no selections made display an alert box 
		return false;
	}
	return true;
}

// Contrôles de saisie basés sur des expressions régulières
function testSrc(objValue, typeRegEx) {
	
	var param = "";
	switch (typeRegEx) {
		case "nomPers": 		{param = "^[a-zA-Z-àâäéèêëùôöüûiîïç\\-'' ]+$"; break; }
		case "nomPersEmpty": 	{param = "[^a-zA-Z-àâäéèêëùôöüûiîïç ]{0}[a-zA-Z-àâäéèêëùôöüûiîïç\\-''&\\/ ]*"; break; }
		case "nomPersNum": 		{param = "[^a-zA-Z-àâäéèêëùôöüûiîïç ]{0}[\\w-àâäéèêëùôöüûiîïç\\-''&\\/ ]+"; break }
		case "emailReg": 		{param = "[a-zA-Z0-9\\-_]+[a-zA-Z0-9\\.\\-_]*@[a-zA-Z0-9\\-_]+\\.[a-zA-Z\\.\\-_]{1,}[a-zA-Z\\-_]+"; break; }
		//case "cpReg": 		{param = "[0-9]{5}"; break; }
		case "cpReg":			{param = "^(0[1-9]|[1-9][\\d])[\\d]{3}$"; break; }
		case "cpReg2": 			{param = "[0-9]{2,3}"; break; }
		case "telReg": 			{param = "[0-9]{10}"; break;}
		case "telReg0": 		{param = "(01|02|03|04|05|06|08|09)[0-9]{8}"; break; }
		//case "telReg2": 		{param = "[0-9]{2}[ ][0-9]{2}[ ][0-9]{2}[ ][0-9]{2}[ ][0-9]{2}"; break; }
		case "telReg2": 		{param = "(01|02|03|04|05|06|08|09)[ ][0-9]{2}[ ][0-9]{2}[ ][0-9]{2}[ ][0-9]{2}"; break; }
		case "telRegEmpty": 	{param = "([0-9]{10})*"; break; }
		case "faxReg": 			{param = "[0-9]{2}[ ][0-9]{2}[ ][0-9]{2}[ ][0-9]{2}[ ][0-9]{2}"; break; }
		case "numInseeReg": 	{param = "[0-9A-Z]{15}"; break; }
		case "numInseeReg2": 	{param = "[0-9]{6}[0-9AB][0-9]{6}"; break; }
		case "numInsee": 		{param = "[0-9A-Z]{13}"; break; }
		case "cleInsee": 		{param = "[0-9]{2}"; break; }
		case "numMax3": 		{param = "[0-9]{1,3}"; break;}
		case "num": 			{param = "[0-9]*"; break; }
		case "numAdh" : 		{param = "[0-9]{8}"; break; }
		case "departement" : 	{param = "[0-9AB]{1,3}"; break; }
		case "numRue" : 		{param = "[0-9]+\\s*[\\w]" ; break; }
		case "numStringEmpty" : {param = "\\w"; break; }
		case "numString" : 		{param = "\\w+"; break; }
		case "date" : 			{param = "\\d{2}\\/\\d{2}\\/\\d{4}"; break;}
		case "login" : 			{param = "[a-zA-Z*]{3}\\d{8}"; break; }
		case "adherent" : 		{param = "^\\d{4,8}$"; break; }
		case "identifiant" : 	{param = "^[A-Z\*]{3}\\d{8}$"; break; }
		case "password" : 		{param = "^[a-zA-Z0-9]{4,6}$"; break; }
		case "numDent" : 		{param = "[1-4][1-8]"; break; }
		case "montant" : 		{param = "[\\d]{1,6}[\\.|,][\\d]{2}"; break; }
		case "carStop" : 		{param = "[^\\t\\n\\r]"; break; } // On interdit les tabulations et les retours à la ligne
		default: {
			alert("RegExp " + typeRegEx + " inconnu");
			return false;
			break;
		}
	}

	var regex = new RegExp(param);
	return regex.test(objValue);

}

function limiteur(nTexte, nCompteur, nLimite) {
	if (nTexte.value.length > nLimite)
		nTexte.value = nTexte.value.substring(0, nLimite);
	else
		nCompteur.innerHTML = nLimite - nTexte.value.length;
//		nCompteur.value = nLimite - nTexte.value.length;
  		//nCompteur.innerHTML = nLimite - nTexte.value.length;
}