function forceInt(s) {
    s = '' + s;
    while (s.substr(0, 1) == '0') { s = s.substr(1); }
    return parseInt(s * 1);
}

function DaysInMonth(month, year) {
    if (month == 2) {
    	// February has 29 days in any year evenly divisible by four,
        // EXCEPT for centurial years which are not also divisible by 400.
        d = (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
    }
    else
    if (month == 4 || month == 6 || month == 9 || month == 11)
        d = 30
    else
        d = 31;
    return d;
}

function IsValidDate(D){
	D = ""+D;

	if (D.length != 10)
	    return false;

	if (D.substr(2,1) != '-' || D.substr(5,1) != '-')
	    return false;

    day = forceInt(D.substr(0,2));
    month = forceInt(D.substr(3,2));
    year = forceInt(D.substr(6, 4));
    if (isNaN(day) || isNaN(month) || isNaN(year))
        return false;
    if (year < 1900)
        return false;
    if (month < 1 || month > 12)
        return false;
    if (day < 1 || day > DaysInMonth(month,year))
        return false;
    return true;
}

function berekenLeeftijd(Geboortedatum,Peildatum) {
    if (!IsValidDate(Geboortedatum)) {
        return '';
    }
    if (Peildatum && !IsValidDate(Peildatum)) {
        return '';
    }
    var bday = forceInt(Geboortedatum.substr(0,2));
    var bmo = forceInt(Geboortedatum.substr(3,2))-1;
    var byr = forceInt(Geboortedatum.substr(6,4));
    if (Peildatum) {
        var tday = forceInt(Peildatum.substr(0,2));
        var tmo = forceInt(Peildatum.substr(3,2))-1;
        var tyr = forceInt(Peildatum.substr(6,4));
    }
    else {
        var now = new Date();
        tday = now.getDate();
        tmo = now.getMonth();
        tyr = now.getFullYear();
    }

    if((tmo > bmo)||(tmo==bmo & tday>=bday))
        return tyr-byr
    else
        return tyr-byr-1
}

function days_between(date1, date2) {

    // The number of milliseconds in one day
    var ONE_DAY = 1000 * 60 * 60 * 24

    // Convert both dates to milliseconds
    var date1_ms = date1.getTime()
    var date2_ms = date2.getTime()

    // Calculate the difference in milliseconds
    var difference_ms = Math.abs(date1_ms - date2_ms)
    
    // Convert back to days and return
    return Math.round(difference_ms/ONE_DAY)

}

function D1GreaterThanD2(date1, date2) {
    // Convert both dates to milliseconds
    var date1_ms = date1.getTime()
    var date2_ms = date2.getTime()

    // Calculate the difference in milliseconds
    return ((date1_ms - date2_ms) > 0);
}


function StringToDate(sDate) {
    if (IsValidDate(sDate)) {
        var D = new Date();
        var day = forceInt(sDate.substr(0,2));
        var month = forceInt(sDate.substr(3,2)) - 1;
        var year = forceInt(sDate.substr(6,4));
        D.setFullYear(year, month, day);
        return D;
    }
    else
        return null;
}

function DaysBetweenSDates(sDate1, sDate2) {
    var D1 = StringToDate(sDate1);
    var D2 = StringToDate(sDate2);
    if (D1 && D2) {
        return days_between(D1,D2);
    }
    else
        return null;
}

function FirstSDateOfYear() {
    var now = new Date();
    return '01-01-' + now.getFullYear();
}

function IsLastDateOfMonth(sDate) {
    try {
        var theDate = StringToDate(sDate);
        var m = theDate.getMonth() + 1;
        var d = theDate.getDate();
        var y = theDate.getFullYear();
        // Find last day in month
        var lastDayRaw = new Date(y, m, 0);
        return (lastDayRaw.getDate() == theDate.getDate());
    }
    catch(err) {
    }
}
