// cw-datetime-en.js -- R.E.Korns  1.5   8-Apr-2004  Revised timezone change fixes
//                      R.E.Korns  1.4  28-Mar-2004  English Version
//                      R.E.Korns  1.3  26-Feb-2004  Revised
//                      R.E.Korns  1.2  11-Feb-2004  Revised
//                      R.E.Korns  1.1   9-Feb-2004  Author

function tfmt (hr, min, dow) {
   var txt;
   var dtxt = "";

   if (dow == 0)      dtxt += "Sunday";
   else if (dow == 1) dtxt += "Monday";
   else if (dow == 2) dtxt += "Tuesday";
   else if (dow == 3) dtxt += "Wednesday";
   else if (dow == 4) dtxt += "Thursday";
   else if (dow == 5) dtxt += "Friday";
   else if (dow == 6) dtxt += "Saturday";

   if (min < 10) min = "0" + min;

   if (hr < 12)       txt = dtxt + " at " + hr + ":" + min + " AM";
   else if (hr == 12) txt = dtxt + " at " + hr + ":" + min + " PM";
   else               txt = dtxt + " at " + (hr-12) + ":" + min + " PM";

   return txt;
}

var d = new Date(); // Local Time...

var utc = new Date(
      d.getUTCFullYear(), // Year (yyyy)
      d.getUTCMonth(), // Month of the year (0-11)
      d.getUTCDate(), // Day of the month (1-31)
      d.getUTCHours(), // Hour of the day (0-23)
      d.getUTCMinutes(), // Minutes past the hour (0-59)
      d.getUTCSeconds(), // Seconds past the minute (0-59)
      d.getUTCMilliseconds() // Milliseconds past the second (0-999)
   );

var msUTC = utc.valueOf();

// Calculate LA Daylight Saving Time, backup UTC (GMT) seven hours (-7)...
var msHr7 = (60 * 60 * 1000) * 7; // Milliseconds in seven hours
var msPDT = msUTC - msHr7;
var pdt = new Date(msPDT);

// Calculate LA Pacific Standrd Time, backup UTC (GMT) eight hours (-8)...
var msHr8 = (60 * 60 * 1000) * 8; // Milliseconds in eight hours
var msPST = msUTC - msHr8;
var pst = new Date(msPST);

// Debug
//document.write("<br>"+d+" Local"+"<br>"+utc+" UTC"+"<br>"+pdt+" PDT"+"<br>"+pst+" PST");

// In the US, Daylight time starts in the local time zone on
// the first Sunday in April at 0200 and ends the last Sunday
// in October at 0200.  In Javascript, we have only GMT to work
// with and the local browser time could be anywhere.

// We've calculated Daylight Saving Time in LA, now check the
// calendar window using it to see if that's true...

var daylight = 0;
var mon = pdt.getMonth();
var day = pdt.getDate();
var hrs = pdt.getHours();
var dow = pdt.getDay();
// Debug
//document.write("<br>calendar test "+mon+" "+day+" "+hrs+" d"+dow);

// Month window...
if (mon >= 3 && mon <= 9) {
   if (mon == 3) { // April
      if (day <= 7) { // First week
         if (dow == 0) { // Sunday
            daylight = 1 // Assume 0200 or later
         } else { // Other weekday
            if (day > dow) { // Dayofweek past Sunday ??
               daylight = 1
            }
         }
      } else {
         daylight = 1
      }
   } else if (mon == 9) { // October
      if (day >= 25) { // Last week
         if (dow == 0) { // Sunday
            daylight = 0 // Assume after 0200
         } else { // Other weekday
            if (day > (dow + 24)) { // Dayofweek past Sunday ??
               daylight = 0 // No
            } else {
               daylight = 1 // Yes
            }
         }
      } else {
         daylight = 1
      }
   } else {
      daylight = 1
   }
}

var la;
if (daylight == 0) {
   la = new Date(pst.valueOf());
   // Debug
   //document.write("<br>Using PST<br>");
} else {
   la = new Date(pdt.valueOf());
   // Debug
   //document.write("<br>Using PDT<br>");
}
document.write("(It is now " + tfmt(la.getHours(),la.getMinutes(),la.getDay()) + " in Los Angeles.)");

// ------ End cw-datetime-en.js ------

