Date.prototype.inMonth = function(date_ref) {
   // indique si la date en cours et date_ref sont du même mois et de la même année
    if ((this.getMonth() == date_ref.getMonth()) && (this.getFullYear() == date_ref.getFullYear())) return true;
    return false;
}

Date.prototype.nextDay = function() {
   // incrémente le jour de la date en fonction du nombre de jours en argument (si pas d'argument, l'incrément = 1)
   // p. ex. var jour = new Date(2004, 0, 1) (soit 01/01/2004), jour.nextDay() donnera le 02/01/2004
   // et jour.nextDay(31) donnera le 01/02/2004
   if (arguments.length) var increment = parseInt(arguments[0]);
   else var increment = 1;
   this.setDate(this.getDate() + increment);
}

Date.prototype.nextMonth = function() {
   // passe le jour au mois suivant
   if (this.getMonth() < 11) this.setMonth(this.getMonth() + 1);
   else {
       this.setMonth(0);
       this.setFullYear(this.getFullYear() + 1);
   }
}

Date.prototype.precMonth = function() {
   // passe le jour au mois précédent
   if (this.getMonth()) this.setMonth(this.getMonth() - 1);
   else {
       this.setMonth(11);
       this.setFullYear(this.getFullYear() - 1);
   }
}

Date.prototype.nextYear = function() {
   // passe le jour à l'année suivante
   this.setFullYear(this.getFullYear() + 1);
}

Date.prototype.precYear = function() {
   // passe le jour à l'année précédente
   this.setFullYear(this.getFullYear() - 1);
}

Date.prototype.debOfMonth = function() {
    // met la date en cours au premier du mois
    this.setTime(this.getTime() - (this.getDate() - 1)*24*60*60*1000);
}

Date.prototype.endOfMonth = function() {
   // met la date en cours à la fin du mois
   this.nextMonth();
   this.setDate(1);
   this.setTime(this.getTime() - 24*60*60*1000);
}

Date.prototype.sameDay = function(date) {
    if (this.getFullYear()!=date.getFullYear()) return false;
    if (this.getMonth()!=date.getMonth()) return false;
    if (this.getDate()!=date.getDate()) return false;
    return true;
}

Date.prototype.monthStr = function() {
   var nom_mois = new Array("janvier", "f\351vrier", "mars", "avril", "mai", "juin", "juillet", "ao\373t", "septembre", "octobre", "novembre", "d\351cembre");
   return nom_mois[this.getMonth()];
}

Date.prototype.toFrenchString = function() {
    var annee = this.getFullYear();
    var mois  = this.getMonth();    
    var jour  = this.getDate();

    mois++;
    mois = (mois<10) ? "0"+mois : mois;
    jour = (jour<10) ? "0"+jour : jour;

    return jour+"/"+mois+"/"+annee;
}

Date.prototype.dateTimeToFrenchString = function() {
    var h = this.getHours();
    h = (h<10) ? "0"+h : h;
    var m = this.getMinutes();
    m = (m<10) ? "0"+m : m;
    var s = this.getSeconds();
    s = (s<10) ? "0"+s : s;

    return this.toFrenchString() + " " + h+":"+m+":"+s;
}

Date.prototype.toMySQL = function() {
    var annee = this.getFullYear();
    var mois  = this.getMonth()+1;    
    var jour  = this.getDate();

    mois = (mois<10) ? "0"+mois : mois;
    jour = (jour<10) ? "0"+jour : jour;
    
    return annee+"-"+mois+"-"+jour;
}

Date.secondsToStr = function(secondes) {
    var jours = Math.floor(secondes/3600/24);
    secondes -= jours*3600*24;

    var heures = Math.floor(secondes/3600);
    secondes -= heures*3600;
    
    var minutes = Math.floor(secondes/60);
    secondes -= minutes*60;
    
    var str = "";
    if (jours>0) str += jours+" jours ";
    if (str!="" || heures>0) str += heures+"h";
    if (str!="" || minutes>0) str += minutes+"mn";
    if (str!="" || secondes>0) str += secondes+"s";

    return str;
}