//  getday.js
//  Written:  2006-04-11 by James Alarie <jalarie@umich.edu>
//    http://spruce.flint.umich.edu/~jalarie/
//
//  The standard getDay method returns 0-6 for Sunday-Saturday or 
//  Monday-Sunday depending on localization.  This function gives 
//  0-6 always based on Sunday-Saturday.
//
//  Example:
//
//    Now=new Date();
//    Now_W=Now.GetDate(Now);
//      or
//    Now_W=Now.GetDate(Year,Month,Date);
//
//  The NowSplit function splits the Now value into usable parts.
    
        function GetDay(DA_Year,DA_Month,DA_Date) {
          if (!DA_Month) {
            DA_Now=new Date(DA_Year);
            DA_Year=DA_Now.getYear();
            if (DA_Year < 70)   { DA_Year=DA_Year*1+2000; }
            if (DA_Year < 1000) { DA_Year=DA_Year*1+1900; }
            DA_Month=DA_Now.getMonth()+1;           // Jan-Dec = 1-12
            DA_Date=DA_Now.getDate();
          }
          DA_Month-=1;                              // Jan-Dec = 0-11
          DA_Offsets=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
          if ((DA_Year%400 == 0)
          ||  ((DA_Year%100 != 0) && (DA_Year%4 == 0))) {
            DA_Offsets[1]=29;                       // leap year: Feb=29 days
          }
          DA_Work=Math.floor((DA_Year - 1581) *5/4);
          for (DA_ix1=1700; DA_ix1<DA_Year; DA_ix1=DA_ix1+100) {
            if (DA_ix1%400 != 0) { DA_Work+=6; }
          }
          DA_Work+=4;
          DA_Work=DA_Work%7;                        // day year begins (Sun-Sat)
          for (DA_ix1=0; DA_ix1<DA_Month; DA_ix1++) {
            DA_Work+=DA_Offsets[DA_ix1];
          }
          DA_Work=DA_Work%7;                        // day month begins
          DA_Work+=DA_Date*1-1;
          DA_Day=DA_Work%7;                         // day of target date
          return DA_Day;
        } // GetDay
        
        function NowSplit() {
          Now_Y=Now.getYear();
          if (Now_Y < 70)   { Now_Y=Now_Y*1+2000; }
          if (Now_Y < 1000) { Now_Y=Now_Y*1+1900; }
          Now_Yf=Now.getFullYear();                 // should match Now_Y
          Now_M=Now.getMonth();                     // Jan-Dec = 0-11
          Now_D=Now.getDate();                      // 1-31
          Now_H=Now.getHours();                     // 0-23
          Now_N=Now.getMinutes();                   // 0-59
          Now_S=Now.getSeconds();                   // 0-59
          Now_U=Now.getMilliseconds();              // 0-999
          Now_T=Now.getTime();                      // miliseconds since 1970-01-01
          Now_O=Now.getTimezoneOffset();            // in minutes
          Now_W=GetDay(Now);                        // weekday: Sun-Sat = 0-6
          Now_J=                                    // day of year (Julian day)
            Math.round((                            // ...account for DST
            (new Date(Now_Y,Now_M,Now_D))           // ...most recent midnight
            - (new Date(Now_Y,0,0)))                // ...Dec. 31st midnight
            /86400000);                             // ...mili-seconds per day
          
          Now_M1=Now_M*1+1;                         // Jan-Dec = 1-12
          
          Now_A='am';
          Now_H12=Now_H;
          if (Now_H12 >= 12) {
            Now_A='pm';
            Now_H12=Now_H12-12;
          }
          if (Now_H12 == 0) { Now_H12=12; }
          
          if (Now_M < 10)   { Now_M='0'+Now_M; }    // leading zero?
          if (Now_M1 < 10)  { Now_M1='0'+Now_M1; }
          if (Now_D < 10)   { Now_D='0'+Now_D; }
          if (Now_H < 10)   { Now_H='0'+Now_H; }
          if (Now_H12 < 10) { Now_H12='0'+Now_H12; }
          if (Now_N < 10)   { Now_N='0'+Now_N; }
          if (Now_S < 10)   { Now_S='0'+Now_S; }
          if (Now_U < 10)   { Now_U='0'+Now_U; }
          if (Now_U < 100)  { Now_U='0'+Now_U; }
          
          Month_Names=new Array('January', 'February', 'March', 'April', 'May',
            'June', 'July', 'August','September', 'October', 'November', 'December');
          Day_Names=new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday',
            'Thursday', 'Friday', 'Saturday');
          Month_Name=Month_Names[Now_M*1];
          Day_Name=Day_Names[Now_W];
        } // NowSplit
