var sMessage=new Array();
sMessage[0]="Liste des messages d'erreur.";
sMessage[1]="Le champ ^ est obligatoire";
sMessage[2]="La valeur du champ ^ doit être numérique";
sMessage[3]="Merci d'utiliser un / ou - pour séparer la date.";
sMessage[4]="Vous avez précisé un mois invalide. \n(^, format: jj/mm/aaaa)";
sMessage[5]="Vous avez précisé un jour invalide. \n(^, format: jj/mm/aaaa)";
sMessage[6]="Vous avez précisé une année invalide. \n(^, format: jj/mm/aaaa)";
sMessage[7]="La valeur du champ ^ n'est pas un montant (format: 2543.12) ";
sMessage[8]="La valeur du champ ^ n'est pas un adresse e-mail (format: a.bcde@fg.fr) ";
sMessage[9]="Vous avez précisé une année invalide. \n(^, format: jj/mm/aaaa)";

var rMontant=/^[\+-]?\d+([\.,]\d{2})?$/;
var rCredit=/^\d+$/;
var rNum=/^[0-9]\d*$/;
var rEmail=/.@.*\./;

var oDict=new Array();

function dictElem(oField, sLabel) 
{ 
   this.name = oField.name;
   this.label = sLabel;
} 

function getLabel(oField) {
	for (ii=0;ii<oDict.length;ii++) {
		if (oDict[ii].name==oField.name) {
			return oDict[ii].label;
			break;
			}
		}
	return oField.name.replace(/-|_/g," ") 
	}

function shoError(iMessage,oField) {
	alert(sMessage[iMessage].replace(/\^/g,getLabel(oField)));
	var sType=(oField.type)?oField.type:oField[0].type;
	switch (sType) {
		case 'checkbox':
		case 'radio':
			break;
		case 'select-one':
			oField.focus();
			break;
		default:
			oField.select();
			break;
		}
	return false;
}

/* function pour verifier la format date 
** In :	le nom du champ ... document.form.field
** Out:	true or false selon le format du valeur du champ
**			null values sont authorisés ... 
*/
function checkDate(oField) {
if (oField.value.length==0) 
	return true;
var sSep=null;
for (k=0;k<oField.value.length;k++){
	if (isNaN(oField.value.substr(k,1))) {
		sSep=oField.value.substr(k,1);
		break;
	}
}
if (sSep==null) {
		return shoError(3,oField);
}
var aDate=oField.value.split(sSep);
var iYear=parseInt(new Number(aDate[2]));

if (iYear<1900) {
		return shoError(9,oField);
	}
var iMonth=parseInt(new Number(aDate[1]));
var iDay=parseInt(new Number(aDate[0]));

if (isNaN(iMonth)||1>iMonth || iMonth>12) {
		return shoError(4,oField);
	}

var iDayMax=30;
switch (iMonth) {
	case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12:
		iDayMax=31;
		break;
	case 2: 
		iDayMax=((iYear%4==0&&iYear%100!=0)||(iYear%1000==0))?29:28;
		break;
	default: 
		iDayMax=30;
		break;
	}

if (isNaN(iDay) || 1>iDay || iDay>iDayMax) {
		return shoError(5,oField);
	}

if (isNaN(iYear)) {
		return shoError(6,oField);
	}
if (iDay<10) aDate[0]="0" + iDay;
if (iMonth<10) aDate[1]="0" + iMonth;
oField.value=aDate.join("/");
return true;
}

function checkNumeric(oField) {
	if (oField.value.length==0) 
		return true;
	if (!rNum.test(oField.value)) {
		return shoError(2,oField);
	}
return true;
}

function checkMontant(oField) {
	if (oField.value.length==0) 
		return true;
	if (!rMontant.test(oField.value)) {
		return shoError(7,oField);
	}
return true;
}

function checkMontantSiRempli(oField) {
	if (!rMontant.test(oField.value)) {
		return shoError(7,oField);
	}
return true;
}

function checkEmail(oField) {
	if (oField.value.length==0) 
		return true;
	if (!rEmail.test(oField.value)) {
		return shoError(8,oField);
	}
return true;
}

function checkObligatoire(oField) {
var sType=(oField.type)?oField.type:oField[0].type;
switch (sType) {
	case 'checkbox':
	case 'radio':
		var bChecked=false;
		for (j=0;j<oField.length;j++) {
			if (oField[j].checked) {
				bChecked=true;
				break;
				}
			}
		if (!bChecked) {
			return shoError(1,oField[0]);
			}
		break;
	case 'select-one':
		if (oField[oField.selectedIndex].value=="") 
				return shoError(1,oField);
		break;	
	case 'fileupload':
	case 'text':
	case 'textarea':
		if (oField.value.length==0) {
			return shoError(1,oField);
			}
		break;
	
	}
return true;
}