function kcf_text(formname,field,fieldname,input_type,selmin,selmax,must,mask,equal,equal_desc,error_msg){
	
	var theform = k_findObj(formname);
	var error='';
	var fieldval = eval('theform.'+field+'.value');
	if (equal!='') var fieldequal = eval('theform.'+equal+'.value');
	
	fieldval2=fieldval.replace(/\s/gi,"");
	if (must & fieldval2=='') error=fieldname+' : saisie obligatoire \n';
	
	// texte standard
	if (input_type=='') {
		if (selmin!='' & fieldval.length < selmin) error=fieldname+' : '+selmin+' caratère(s) au minimum\n';
		if (selmax!='' & fieldval.length > selmax) error=fieldname+' : '+selmax+' caratère(s) au maximum\n';
	}
	
	// date
	if (fieldval!='' & (input_type=='datetime' | input_type=='time' | input_type=='date') ) {
		if (input_type=='datetime') ok=fieldval.match("^([0-3][0-9])[/\.\-]{0,1}([0-1][0-9]){0,1}[/\.\-]{0,1}([0-9]{0,4})[ ]{0,1}([0-2][0-9]){0,1}[\:]{0,1}([0-5][0-9]){0,1}[\:]{0,1}([0-5][0-9]){0,1}$");
		if (input_type=='time')     ok=fieldval.match("^([0-2][0-9]){0,1}[\:]{0,1}([0-5][0-9]){0,1}[\:]{0,1}([0-5][0-9]){0,1}$");
		if (input_type=='date')   ok=fieldval.match("^([0-3][0-9])[/\.\-]{0,1}([0-1][0-9]){0,1}[/\.\-]{0,1}([0-9]{0,4})$");

		verif=true;
		if(ok){
			if (input_type=='date' | input_type=='datetime') {
				k_day=ok[1];k_month=ok[2];k_year=ok[3];
				if (k_day<1 | k_day>31) verif=false;
				if (k_month=='00') verif=false;
				if (!k_month) {m_date=new Date();k_month=m_date.getMonth()+1};
				if (k_year.length==3 | k_year.length==1) verif=false;
				if (k_year.length==2 ) {
					if (k_year>40) k_year='19'+k_year;
					else k_year='20'+k_year;
				}
				if (!k_year) {y_date=new Date();k_year=y_date.getFullYear()};
				if (k_year =='0000') verif=false;
				v_date=new Date(k_year,k_month-1,k_day);
				if (v_date.getFullYear()!=k_year | v_date.getDate()!=k_day | v_date.getMonth()!=(k_month-1)) verif=false;
				if (selmin!='') { min_date=new Date(selmin);if (v_date<min_date) verif=false;}
				if (selmax!='') { max_date=new Date(selmax);if (v_date>max_date) verif=false;}
			}
			if (input_type=='time' | input_type=='datetime') {
				k_hour=ok[4];k_min=ok[5];k_sec=ok[6];
				if (k_hour=='') k_hour=0;
				if (k_min=='') k_min=0;
				if (k_sec=='') k_sec=0;
				if (k_hour>23) verif = false;
				if (k_min>59) verif = false;
				if (k_sec>59) verif = false;
			}
		}
		else{verif=false}
		if (!verif) error=fieldname+' : saisie incorrecte\n saisie : jj/mm/aaaa, jjmmaaaa, jjmmaa, jjmm, jj) \n ex : 13/05/2001 ou 1809\n';
	}
	
	//float
	if (fieldval!='' & input_type=="float") {
		fieldval = fieldval.replace(',','.');
		fieldval = fieldval.replace(' ','');
		var verif=true;
		if (isNaN(fieldval)) verif=false;
		else if (selmin!='' & selmax!='' & (fieldval<selmin | fieldval>selmax))  verif=false;
		else if (selmin!='' & fieldval<selmin)  verif=false;
		else if (selmax!='' & fieldval>selmax)  verif=false;
		if (!verif & selmin!='' & selmax!='') error=fieldname+' : doit être un nombre entre '+selmin+' et '+selmax+' \n';
		else if (!verif & selmin!='') error=fieldname+' : doit être un nombre supérieur ou égale à '+selmin+'\n';
		else if (!verif & selmax!='') error=fieldname+' : doit être un nombre inférieur ou égale à '+selmax+'\n';
		else if (!verif) error=fieldname+' : doit être un nombre (entier ou pas)\n';
	}

	//int
	if (fieldval!='' & input_type=="int") {
		fieldval = fieldval.replace(' ','');
		var verif=true;
		if (!fieldval.match('^[0-9]*$')) verif=false;
		else if (selmin!='' & selmax!='' & (fieldval<selmin | fieldval>selmax))  verif=false;
		else if (selmin!='' & fieldval<selmin)  verif=false;
		else if (selmax!='' & fieldval>selmax)  verif=false;
		if (!verif & selmin!='' & selmax!='') error=fieldname+' : doit être un nombre entier entre '+selmin+' et '+selmax+' \n';
		else if (!verif & selmin!='') error=fieldname+' : doit être un nombre entier supérieur ou égale à '+selmin+'\n';
		else if (!verif & selmax!='') error=fieldname+' : doit être un nombre entier inférieur ou égale à '+selmax+'\n';
		else if (!verif) error=fieldname+' : doit être un nombre entier\n';
	}

	//email
	if (fieldval!='' & input_type=="email") {
		if (!fieldval.match("^[0-9a-zA-Z-\\.]+@[0-9a-zA-Z-\\.]+\\.[0-9a-zA-Z]{2,4}$")) error=fieldname+' : doit être une adresse email valide \n';
	}
	
	//mask
	if (fieldval!='' & mask!='') {
		if (!fieldval.match(mask)) error=fieldname+' : ne correspond pas au format de saisie.\n';
	}
	
	// === egalité
	if (fieldval!='' & equal!='') {
		if (fieldval!=fieldequal) error=fieldname+' : doit être égal au champ \''+equal_desc+'\'.\n';
	}
			
	if (error!='' & errorfield=='') errorfield=field;
	if (error!='' & error_msg!='') error=error_msg+'\n';
	return error;

}
