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);