function addMonth(sStartDate, sFieldId)
{
    var oRegExp = new RegExp("/", "gi");
    var aiDateArray = sStartDate.split(oRegExp);
    var bOut = true;
    if(aiDateArray.length != 3)
    {
        alert("La date saisie n'est pas valide.");
        bOut = false;
    }
    else
    {
        var sEnglishMonth = translateNumMonthToAlpahMonth(aiDateArray[1]);
        oDate = new Date();
        sStringToParse = sEnglishMonth + " " + aiDateArray[0] + ", " + aiDateArray[2];
        oDate.setTime(Date.parse(sStringToParse));
        i2MonthsMiliseconds = getNext2MonthTimeStamp(aiDateArray[1], aiDateArray[2]);
        iRestingDays = nbJM(aiDateArray[1], aiDateArray[2]) - aiDateArray[0];
        iRestingDaysMiliseconds = ( 3600 * 24 * iRestingDays ) * 1000;
        oEndDate = new Date();
        oEndDate.setTime(iRestingDaysMiliseconds + oDate.getTime() + i2MonthsMiliseconds);
        oEndDateField = document.getElementById(sFieldId);
        oEndDateField.value = formatDate(oEndDate);
    }
}
function translateNumMonthToAlpahMonth(iNumMonth)
{
    sOut = "";
    switch(iNumMonth)
    {
        case "01":
            sOut = "January";
            break;
        case "02":
            sOut = "February";
            break;
        case "03":
            sOut = "March";
            break;
        case "04":
            sOut = "April";
            break;
        case "05":
            sOut = "May";
            break;
        case "06":
            sOut = "June";
            break;
        case "07":
            sOut = "July";
            break;
        case "08":
            sOut = "August";
            break;
        case "09":
            sOut = "September";
            break;
        case "10":
            sOut = "October";
            break;
        case "11":
            sOut = "November";
            break;
        case "12":
            sOut = "December";
            break;
    }
    
    return sOut;
}

function nbJM(mois, annee)
{
    var nbJ = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    
    if( (mois == 2) && (LeapYear(annee)) )
        return nbJ[mois-1] + 1;
    else
        return nbJ[mois - 1];
}

function LeapYear(y)
{
    return (y%4==0) == (y%100==0) == (y%400==0)
}

function formatDate(oDate)
{
    sMonth = "";
    iMonth = oDate.getMonth() + 1;
    sMonth = iMonth + "";
    if(sMonth.length < 2)
    {
    	sMonth = "0" + sMonth;
    }
    sOut = oDate.getDate() + "/" + sMonth + "/" + oDate.getFullYear();
    return sOut;
}

function getNext2MonthTimeStamp(sStartMonth, sStartYear)
{
    iOut = 0;
    iDayMiliseconds = (3600 * 24 * 1000);
    iStartMonth = parseInt(sStartMonth)
    iNextMonth = getNextMonth(iStartMonth);
    iStartYear = parseInt(sStartYear);
    if(iNextMonth == 1)
    {
        iStartYear = iStartYear + 1;
    }
    iNbDaysFirstMonth = nbJM(iNextMonth, iStartYear);
    iOut = iDayMiliseconds * iNbDaysFirstMonth;
    iNextMonth = getNextMonth(iNextMonth);
    iNbDaysSecondMonth = nbJM(iNextMonth, iStartYear);
    iOut = iOut + (iDayMiliseconds * iNbDaysSecondMonth);
    
    return iOut;
}

function getNextMonth(iStartMonth)
{
    if(iStartMonth < 12)
    {
        iMonthOut = iStartMonth + 1;
    }
    else
    {
        iMonthOut = 1;
    }
    
    return iMonthOut;
}
