﻿
function getDateLongNL(calendar) {
    var day = calendar.getDay();
    var month = calendar.getMonth();
    var date = calendar.getDate();
    var year = calendar.getYear();
    if (year < 1000)
        year+=1900;
    var cent = parseInt(year/100);
    var g = year % 19;
    var k = parseInt((cent - 17)/25);
    var i = (cent - parseInt(cent/4) - parseInt((cent - k)/3) + 19*g + 15) % 30;
    i = i - parseInt(i/28)*(1 - parseInt(i/28)*parseInt(29/(i+1))*parseInt((21-g)/11));
    var j = (year + parseInt(year/4) + i + 2 - cent + parseInt(cent/4)) % 7;
    var l = i - j;
    var emonth = 3 + parseInt((l + 40)/44);
    var edate = l + 28 - 31*parseInt((emonth/4));
    emonth--;
    var dayname = new Array ("Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag");
    var monthname = new Array ("Januari","Februari","Maart","April","Mei","Juni","Juli","Augustus","September","Oktober","November","December" );
    var datestring=dayname[day] + ", " + date + " " + monthname[month] + " " + year.toString();
    return datestring;
}

function daysInMonth(Y, M) { // M=1..12
    with (new Date(Y, M, 1, 12)) {
        setDate(0) ;
        return getDate(); /* OK in NS4? */
    }
}

function diffDateB(D2,D1) { 
    var dm, dd, A1, A2 // as suggested
    A1=dateToYMDArray(D1);
    A2=dateToYMDArray(D2);
    dm = (12*A1[0]+A1[1]) - (12*A2[0]+A2[1]) ;
    dd = A1[2] - A2[2];
    if (dd<0) {
        dm-- ;
        dd += daysInMonth(A2[0], A2[1]);
    } // **
    return [(dm/12)|0, dm%12, dd];
}

function diffDateC(D2,D1) { 
    var dm, dd, A1, A2 // probably right
    A1=dateToYMDArray(D1);
    A2=dateToYMDArray(D2);
    dm = (12*A1[0]+A1[1]) - (12*A2[0]+A2[1]) ;
    dd = A1[2] - A2[2];
    if (dd<0) {
        dm-- ;
        dd += daysInMonth(A1[0], A1[1]-1);
    } // **
    return [(dm/12)|0, dm%12, dd];
}

function dateToYMDArray(D) {
    return [D.getFullYear(), D.getMonth()+1, D.getDate()];
}

function diffDateInDays(D2,D1) { 
    var dm, dd, A1, A2 // as suggested
    A1=dateToYMDArray(D1);
    A2=dateToYMDArray(D2);
    dm = (12*A1[0]+A1[1]) - (12*A2[0]+A2[1]) ;
    dd = A1[2] - A2[2];
    if (dd<0) {
        dm-- ;
        dd += daysInMonth(A2[0], A2[1]);
    } // **
    return dd;
}

function diffDateInMonths(D2,D1) { 
    var dm, dd, A1, A2 // as suggested
    A1=dateToYMDArray(D1);
    A2=dateToYMDArray(D2);
    dm = (12*A1[0]+A1[1]) - (12*A2[0]+A2[1]) ;
    dd = A1[2] - A2[2];
    if (dd<0) {
        dm-- ;
        dd += daysInMonth(A2[0], A2[1]);
    } // **
    return (((dm/12)|0)*12)+(dm%12);
}

function diffDateInMonths2(startdatum,einddatum) {
    var maanden=0;
    var diff=new Date();
    diff.setTime(einddatum.getTime()-startdatum.getTime());
    diff.setFullYear(diff.getFullYear()-1970);
    maanden=Math.abs(diff.getMonth()+(12*diff.getFullYear()));
return maanden;
}

function makeArray() {
    var args = makeArray.arguments;
    for (var i = 0; i < args.length; i++) {
        this[i] = args[i];
    }
    this.length = args.length;
}

function fixDate(date) {
    var base = new Date(0);
    var skew = base.getTime();
    if (skew > 0)
        date.setTime(date.getTime() - skew);
}

function getString(date) { 
    var months = new makeArray("januari", "februari", "maart",
    "april", "mei", "juni",
    "juli", "augustus", "september",
    "oktober", "november", "december");

    return (date.getDate() + " " +
            months[date.getMonth()] + " " +
            ((date.getFullYear() < 100) ? "19" : "") + date.getFullYear());
}

function getDateString(thisDate) {
    fixDate(thisDate);
    var str = getString(cur);
return str;
}


function getCurrentDateString() {
    /*
    Toon de huidige datum
    */

    var mydate=new Date()
    var year=mydate.getYear()
    if (year<2000)
        year += (year < 1900) ? 1900 : 0
    var daym=mydate.getDate()
    var month=mydate.getMonth()
    if (daym<10)
        daym="0"+daym
    var montharray=new Array("januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december")
    return (" "+daym+" "+montharray[month]+"  "+year+" ");
}

function weekNo(thisDate) {
    var totalDays = 0;
    thisDate = new Date();
    years=thisDate.getYear();
    var days = new Array(12); // Array to hold the total days in a month
    days[0] = 31;
    days[2] = 31;
    days[3] = 30;
    days[4] = 31;
    days[5] = 30;
    days[6] = 31;
    days[7] = 31;
    days[8] = 30;
    days[9] = 31;
    days[10] = 30;
    days[11] = 31;
     
    // Check to see if this is a leap year
    if (Math.round(thisDate.getYear()/4) == thisDate.getYear()/4) {
        days[1] = 29
    }else{
        days[1] = 28
    }
     
    // If this is January no need for any fancy calculation otherwise figure out the
    // total number of days to date and then determine what week
    if (thisDate.getMonth() == 0) { 
        totalDays = totalDays + thisDate.getDate();
    }else{
        var curMonth = thisDate.getMonth();
        for (var count = 1; count <= curMonth; count++) {
        totalDays = totalDays + days[count - 1];
    }
    totalDays = totalDays + thisDate.getDate();
    }
    // Here is the modification: considering when start the 1st week of year.
    // Originally was only: var week = Math.round(totalDays/7)
    // Check if browser is "Microsoft Internet Explorer" or not and apply the right var
    var agt=navigator.userAgent.toLowerCase();
    if ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1)) {
        var firstday=new Date("01/01/"+String(thisDate.getYear())).getDay();
    }
    else {
        var firstday=new Date("01/01/"+String(1900+thisDate.getYear())).getDay();
    }
    var diff=7-firstday+1;
    var week = Math.round((totalDays+diff-firstday)/7); 
    return week;
}

