Diffrence between week days

Used in alarm

by Maksim Kachurin

HTML

Today: day <span id="today"></span> 
<br />Days: <span id="days"></span>

<br />Nearest day: <span id="nearest"></span>

<br />Now: day <span id="day1_d"></span>, <span id="day1_h"></span>:<span id="day1_m"></span>

<br />Alarm: day <span id="day2_d"></span>, <span id="day2_h"></span>:<span id="day2_m"></span>

<br />Diff: days: <span id="diff_d"></span>, hours: <span id="diff_h"></span>, minutes <span id="diff_m"></span>

JavaScript

// VARS
 var now = new Date(),
     now_d = now.getDay(),
     now_h = now.getHours(),
     now_m = now.getMinutes(),
     days = ['0', '3', '5', '1'],
     day1 = [now_h, now_m, now_d],
     day2 = ['10', '30', '0'];

 // GET NEAREST DAY FUNCTION. k.o
 // (now_day,days[1,3,5,7])
 var getNearestDay = function (now, days, lost) {

     if (!(days instanceof Array)) return now;
     if (days.length === 0) return lost ? parseInt(now) + 1 : parseInt(now);

     // if day lost, select next day
     if (lost) {
         var l = 7;

         // просматриваем числа в большую сторону
         for (var i = 0; i < days.length; i++) {
             if (now < days[i] && l > days[i]) l = days[i];
         }

         // в меньшую сторону (т.е с начала)
         if (l == 7) l = Math.min.apply(Math, days);

         now = l;
     }

     // if now < days, e.g (4,[3,5,6] return 5)
     var k = -1;

     for (var i = 0; i < days.length; i++) {
         if (k > days[i] && now <= days[i]) k = days[i];
         if (k < days[i] && now <= days[i] && now > k) k = days[i];
     }

     if (k !== -1) return k;

     // if now > days, e.g (7,[2,3] return 2)
     k = 6;
     for (i = 0; i < days.length; i++) {
         if (k > days[i] && now > days[i]) k = days[i];
     }
     return k;
 };


 // GET DIFFRENCE BETWEEN TIME
 // (day1[hour,minute,day],day2[hour,minute,day])

 var getDiffBetTime = function (day1, day2) {
     if ((day1 instanceof Array) && (day2 instanceof Array)) {

         var day1_h = parseInt(day1[0]),
             day1_m = parseInt(day1[1]),
             day1_d = parseInt(day1[2]),
             day2_h = parseInt(day2[0]),
             day2_m = parseInt(day2[1]),
             day2_d = parseInt(day2[2]),
             diff_d, diff_h, diff_m;

         // days
         if (day1_d < day2_d) diff_d = day2_d - day1_d;
         else if (day1_d == day2_d && day1_h < day2_h) diff_d = 0;
         else if (day1_d == day2_d && day1_h == day2_h && day1_m <= day2_m) diff_d = 0;
        ...