diff --git a/htdocs/html.form.class.php b/htdocs/html.form.class.php
index 6868142741342ce750281ba61abf080fd5b76f4d..fbf3bea7c00368294243d5612790add33022e4b3 100644
--- a/htdocs/html.form.class.php
+++ b/htdocs/html.form.class.php
@@ -1631,7 +1631,9 @@ class Form
 	            $formated_date=dolibarr_print_date($set_time,$conf->format_date_short);
 
 	            // Zone de saisie manuelle de la date
-	            print '<input id="'.$prefix.'" name="'.$prefix.'" type="text" size="11" maxlength="11" value="'.$formated_date.'"> ';
+	            print '<input id="'.$prefix.'" name="'.$prefix.'" type="text" size="11" maxlength="11" value="'.$formated_date.'"';
+	            print ' onChange="dpChangeDay(\''.$prefix.'\',\''.$conf->format_date_short_java.'\')"';
+	            print '> ';
 	            
 				// Icone calendrier
 	            print '<button id="'.$prefix.'Button" type="button" class="dpInvisibleButtons"';
diff --git a/htdocs/lib/lib_head.js b/htdocs/lib/lib_head.js
index e23dc117b0a5a0a6f25ba365209091d949aaa09d..38b7c24dee035fe3469cb9244ba533aafd502657 100644
--- a/htdocs/lib/lib_head.js
+++ b/htdocs/lib/lib_head.js
@@ -106,15 +106,27 @@ function loadMonth(base,month,year,ymd)
 	showDP.box.innerHTML=req.responseText;	
 }
 
-
-function closeDPBox(){
+function closeDPBox()
+{
 	document.body.removeChild(showDP.box);
 	displaySelectBoxes();
 	showDP.box=null;	
 	showDP.datefieldID=null;	
 }
 
-function dpClickDay(year,month,day,format){
+function dpChangeDay(dateFieldID,format)
+{
+	showDP.datefieldID=dateFieldID;
+	var thefield=getObjectFromID(dateFieldID);
+
+	var date=getDateFromFormat(thefield.value,format);
+
+	if (date) dpClickDay(date.getFullYear(),date.getMonth()+1,date.getDate(),format)
+	else dpClickDay(0,0,0,format);
+}
+
+function dpClickDay(year,month,day,format)
+{
 	var thefield=getObjectFromID(showDP.datefieldID);
 	var thefieldday=getObjectFromID(showDP.datefieldID+"day");
 	var thefieldmonth=getObjectFromID(showDP.datefieldID+"month");
@@ -126,7 +138,7 @@ function dpClickDay(year,month,day,format){
 	dt.setDate(day);
 
 	thefield.value=formatDate(dt,format);
-	if(thefield.onchange) thefield.onchange.call(thefield);
+//	if(thefield.onchange) thefield.onchange.call(thefield);
 
 	thefieldday.value=day;
 	if(thefieldday.onchange) thefieldday.onchange.call(thefieldday);