﻿// --- Aqrate JavaScript Extensions Library --------------------

/*
* Some methods that came from these extensions, are based upon
* functionality exposed by the core library loaded.
*/

// Date object extensions
Aqrate.Web.JavaScript.Core.Utils.Extend(Date.prototype, {

    getDaysSince: function (date) {

        // Get total days between two dates  
        var startDate = date;
        var endDate = this;

        //la getTime calcola i millisecondi dal 1/1/1970 00:00 GMT+x, dove x dipende dal CLIENT. 
        //Se la data impostata dal server è impostata a un GMT differente, allora i millisecondi ritornati non sono mutipli di 24ore quindi va introdotta la correzione dipendente dal GMT.

        //The time-zone offset is the difference, in minutes, between UTC and local time
        var deltaGMToffsetMinutes = endDate.getTimezoneOffset() - startDate.getTimezoneOffset(); //es: GMT+1 <=> -60' // GMT+2 <=> -120'

        var millisec = endDate.getTime() - startDate.getTime();
        var sec = millisec / 1000;

        var minutes = sec / 60;
        var absoluteMinutes = minutes - deltaGMToffsetMinutes; //devo sottrarre perchè i minuti sono la differenza tra la data di fine e quella di inizio e invece i deltaGMToffsetMinutes sono la differenza vero il GMT ... è complicato da capire ma fidati che va bene così... :) 

        var hurs = absoluteMinutes / 60;
        var days = hurs / 24;

        //var nonRoundedValue = ((endDate.getTime() - startDate.getTime()) / 1000 / 60 / 60 / 24);
        //var nonRoundedValue = days;

        //var roundedValue = Math.floor(nonRoundedValue);

        ///////////////// ALERT ////////////////////////

        //        alert("startDate :: " + startDate); 
        //        alert("startDate.getTimezoneOffset() :: " + startDate.getTimezoneOffset());
        //        alert("endDate :: " + endDate); 
        //        alert("endDate.getTimezoneOffset() :: " + endDate.getTimezoneOffset());

        //        The time-zone offset is the difference, in minutes, between UTC and local time
        //        alert("endDate.getTime() :: " + endDate.getTime());
        //        alert("startDate.getTime() :: " + startDate.getTime());

        //        alert("GMToffsetMinutes :: " + deltaGMToffsetMinutes);

        //        alert("millisec :: " + millisec);
        //        alert("sec :: " + sec);
        //        alert("minutes :: " + minutes);
        //        alert("absoluteMinutes :: " + absoluteMinutes);
        //        alert("hurs :: " + hurs);
        //        alert("days :: " + days);

        //        alert("nonRoundedValue :: " + nonRoundedValue);

        //        alert("roundedValue :: " + Math.ceil(nonRoundedValue))
        //        alert("roundedValue FLOOR :: " + Math.floor(nonRoundedValue))

        //return roundedValue;
        return days;

    }
});

