function setClock()
 {
  baselvl = new Date()
  basesec = baselvl.getSeconds()
  getDayLightStart(reftime.year)
  getDayLightEnd()
  makeMonthArray()
  makeDayArray()
  makePlaceArrays()
  return true
 }

 
function getStandardTime(stime)   // 45
 {
   var syear   = stime.year
   var smonth  = stime.month
   var sdate   = stime.date
   var sday    = stime.day
   var shour   = stime.hour
   var smin    = stime.min
   var ssec    = stime.sec 
   var year4   = syear  
   var Mlength = months[smonth].length
   if (smonth == 2)
     { Mlength = getFebMonthDays(year4)}
   if (ssec > 59)
     {
       ssec -= 60
       smin += 1
     } 
   if (smin  > 59)
     {                                // 64
      smin -= 60
      shour += 1 
     }
   if (shour > 23)
    {
    shour = shour - 24
    sdate = sdate + 1
    sday  = sday + 1
    }
   if (sday > 6)
    { sday = 0 }

   if (sdate > Mlength)
    {
     sdate  = 1
     smonth += 1
   
    if (smonth > 12) 
    {
     smonth = 1
     syear += 1
    }
   }
  // when correction is -ve

  if (smin < 0)
   {
    smin += 60
    shour -= 1
   }
  if (shour < 0)
   {
    shour += 24
    sday  -= 1
    sdate -= 1
   }
  if (sday < 0 )
   { sday = 6}
  if (sdate <= 0)
    {
    smonth -= 1                 
    if (smonth == 0) 
     { 
     smonth = 12
     syear -= 1
     }                          // 110
    Mlength = months[smonth].length
    if (smonth == 2)
     { Mlength = getFebMonthDays(year4)} 
    sdate = Mlength                 
    }                              // 110
    stime.year  = syear
    stime.month = smonth
    stime.date  = sdate
    stime.day   = sday
    stime.hour  = shour
    stime.min   = smin
    stime.sec   = ssec 

    return stime;    
 }


function showTime()                // 125
{
 var ss
 var cs
 var cd  
 if (revstep == 0) 
 { reftime.sec += 1 }
 else
  { revstep += 1 }   
 reftime=getStandardTime(reftime)    
 computeTime();
 execnum +=1 
 if (execnum == 10)
  { 
   execnum= 0
   cd = new Date()
   cs = cd.getSeconds()
   ss = cs - basesec
   if (ss < 0)
    { ss +=60 }
   syncClock(ss)
   basesec = cs
  }
 setTimeout("showTime()", timeintvl);
}                                         // 145
function syncClock(ss)
 {
   if (ss > 10 )
    { reftime.sec += ss - 10 }
    else
      { revstep = ss - 10 }
   if (timeintvl > 100)
    {
   if (ss > 0)  
    {
      timeintvl *= 10
      timeintvl /= ss
    }
    }
 }

function computeTime()
{
 var i = 1;

 usPlaces[2]  = placeTime(usPlaces[2]);
 usPlaces[5]  = placeTime(usPlaces[5]);
 usPlaces[6]  = placeTime(usPlaces[6]);
 usPlaces[7]  = placeTime(usPlaces[7]);
 usPlaces[10] = placeTime(usPlaces[10]);
 usPlaces[12] = placeTime(usPlaces[12]);
 usPlaces[19] = placeTime(usPlaces[19]);
 usPlaces[23] = placeTime(usPlaces[23]);

 usPlaces[13].curtime = usPlaces[12].curtime;
 usPlaces[14].curtime = usPlaces[12].curtime;
 usPlaces[15].curtime = usPlaces[12].curtime;
 usPlaces[16].curtime = usPlaces[12].curtime;
 usPlaces[17].curtime = usPlaces[12].curtime;
 usPlaces[18].curtime = usPlaces[12].curtime;
 usPlaces[27].curtime = usPlaces[12].curtime;
 usPlaces[28].curtime = usPlaces[12].curtime;
 usPlaces[30].curtime = usPlaces[12].curtime;
 usPlaces[31].curtime = usPlaces[12].curtime;
 usPlaces[32].curtime = usPlaces[12].curtime;
 usPlaces[33].curtime = usPlaces[12].curtime;
 usPlaces[40].curtime = usPlaces[12].curtime;
 usPlaces[41].curtime = usPlaces[12].curtime;
 usPlaces[43].curtime = usPlaces[12].curtime;
 usPlaces[44].curtime = usPlaces[12].curtime;
 usPlaces[46].curtime = usPlaces[12].curtime;
 usPlaces[49].curtime = usPlaces[12].curtime;
 usPlaces[50].curtime = usPlaces[12].curtime;
 usPlaces[51].curtime = usPlaces[12].curtime;
 usPlaces[55].curtime = usPlaces[12].curtime;
 usPlaces[61].curtime = usPlaces[12].curtime;
 usPlaces[62].curtime = usPlaces[12].curtime;
 usPlaces[64].curtime = usPlaces[12].curtime;
 
 usPlaces[3].curtime = usPlaces[2].curtime;
 usPlaces[4].curtime = usPlaces[2].curtime;

 usPlaces[1].curtime  = usPlaces[6].curtime;
 usPlaces[22].curtime = usPlaces[6].curtime;
 usPlaces[25].curtime = usPlaces[6].curtime;
 usPlaces[26].curtime = usPlaces[6].curtime;
 usPlaces[29].curtime = usPlaces[6].curtime;
 usPlaces[34].curtime = usPlaces[6].curtime;
 usPlaces[35].curtime = usPlaces[6].curtime;
 usPlaces[36].curtime = usPlaces[6].curtime;
 usPlaces[38].curtime = usPlaces[6].curtime;
 usPlaces[45].curtime = usPlaces[6].curtime;
 usPlaces[47].curtime = usPlaces[6].curtime;
 usPlaces[52].curtime = usPlaces[6].curtime;
 usPlaces[53].curtime = usPlaces[6].curtime;
 usPlaces[54].curtime = usPlaces[6].curtime;
 usPlaces[56].curtime = usPlaces[6].curtime;
 usPlaces[57].curtime = usPlaces[6].curtime;
 usPlaces[58].curtime = usPlaces[6].curtime;
 usPlaces[65].curtime = usPlaces[6].curtime;

 usPlaces[8].curtime = usPlaces[7].curtime;
 usPlaces[9].curtime = usPlaces[7].curtime;
 usPlaces[21].curtime = usPlaces[7].curtime;
 usPlaces[39].curtime = usPlaces[7].curtime;
 usPlaces[48].curtime = usPlaces[7].curtime;
 usPlaces[63].curtime = usPlaces[7].curtime;

 usPlaces[11].curtime = usPlaces[10].curtime;
 usPlaces[20].curtime = usPlaces[10].curtime;
 usPlaces[37].curtime = usPlaces[10].curtime;
 usPlaces[42].curtime = usPlaces[10].curtime;
 usPlaces[59].curtime = usPlaces[10].curtime;
 usPlaces[60].curtime = usPlaces[10].curtime;
 
 usPlaces[24].curtime = usPlaces[23].curtime;
 
 for (i=1; i <= 65; i++)
  {
    document.usForm.usTime[i-1].value= usPlaces[i].curtime;
  }
}

function getDayLightStart(anyyear)
 {
  
  anyyear -= 2000

   var x = anyyear % 28
    var dsStrtdays = [12,11,10,9,14,13,12,11,9,8,14,13,11,10,9,8,13,12,11,10,8,14,13,12,10,9,8,14]
     dayStart =dsStrtdays[x]
     return true
 }
function getDayLightEnd()
{
     dayEnd = dayStart - 7
}
function placeTime(splace)
 {
  var  refx= new xtime()
  refx.hour = reftime.hour + splace.hrcorr
  refx.sec  = reftime.sec 
  refx.min  = reftime.min + splace.mincorr 
  refx.day  = reftime.day
  refx.date = reftime.date
  refx.month= reftime.month
  refx.year = reftime.year              
  var apind = "AM"
  refx=getStandardTime(refx);
  // apply day light correction if applicable
  if (splace.dual == 1)           // 230
   {
    refx.hour -= correctDLH(refx); 
    refx=getStandardTime(refx);  
   }             
  if (refx.hour == 12)
   {
     
    apind = "NN"
   } 
  if (refx.hour > 12)
   {
    refx.hour -= 12
    apind = "PM"
   } 
    
  splace.curtime = dayText(refx.day) + " "
  splace.curtime += monthText(refx.month) + " "
  splace.curtime += refx.date
  splace.curtime += ", "
  splace.curtime += refx.hour
  splace.curtime += ((refx.min < 10) ? ":0" : ":") + refx.min;
  splace.curtime += ((refx.sec < 10) ? ":0" : ":") + refx.sec;
  splace.curtime += apind
  return (splace)
 }
function correctDLH(refx)
 {
  if ((refx.month < 3 || (refx.month == 3 && refx.date  < dayStart)  ||
     ( refx.month == 3 && refx.date  == dayStart && refx.hour < 2)) ||
     ( refx.month > 11 || (refx.month == 11 && refx.date > dayEnd)  ||
     ( refx.month == 11 && refx.date == dayEnd && refx.hour > 2) ||
     (refx.month == 11 && refx.date == dayEnd && refx.hour == 2 && refx.min > 0) ||
     (refx.month == 11 && refx.date == dayEnd && refx.hour == 2 && refx.min == 0 && refx.sec > 0)))  
     {      return 0  }
  else     return -1
 }
function dayText(ii)
  {
   return days[ii +1]
  }
  
function monthText(ii)
  {
   return months[ii].name
  }
function makeDayArray()  
 {
  days = new makeArray(7)
  days[1]  = "Sun"
  days[2]  = "Mon"
  days[3]  = "Tue"                // 251
  days[4]  = "Wed"
  days[5]  = "Thu"
  days[6]  = "Fri"
  days[7]  = "Sat"
 }

function makeMonthArray()  
 {
  months = new makeArray(12)
  months[1]  = new month("Jan",31,0)
  months[2]  = new month("Feb",28,1)
  months[3]  = new month("Mar",31,2)
  months[4]  = new month("Apr",30,3)
  months[5]  = new month("May",31,4)
  months[6]  = new month("Jun",30,5)
  months[7]  = new month("Jul",31,6)
  months[8]  = new month("Aug",31,7)
  months[9]  = new month("Sep",30,8)
  months[10] = new month("Oct",31,9)
  months[11] = new month("Nov",30,10)
  months[12] = new month("Dec",31,11) 
 }
function makePlaceArrays()  
 {
  usPlaces = new makeArray(65)
 usPlaces[1]  = new place("Alabama Montgomery",1,-6,0,0,"")
 usPlaces[2]  = new place("Alaska Anchorage",1,-9,0,1,"")
 usPlaces[3]  = new place("Alaska  Juneau",1,-9,0,2,"")
 usPlaces[4]  = new place("Aleutian Islands Atka",1,-9,0,3,"")
 usPlaces[5]  = new place("Arizona Phoenix",0,-7,0,4,"")
 usPlaces[6]  = new place("Arkansas Little Rock",1,-6,0,5,"")
 usPlaces[7]  = new place("California Los Angeles",1,-8,0,6,"")
 usPlaces[8]  = new place("California San Diego",1,-8,0,7,"")
 usPlaces[9]  = new place("California San Francisco",1,-8,0,8,"")
 usPlaces[10]  = new place("Colorado  Boulder",1,-7,0,9,"")
 usPlaces[11]  = new place("Colorado Denver",1,-7,0,10,"")
 usPlaces[12]  = new place("Connecticut Hartford",1,-5,0,11,"")
 usPlaces[13]  = new place("Delaware Newark",1,-5,0,12,"")
 usPlaces[14]  = new place("Dist Columbia Washington",1,-5,0,13,"")
 usPlaces[15]  = new place("Florida Miami",1,-5,0,14,"")
 usPlaces[16]  = new place("Florida Orlando",1,-5,0,15,"")
 usPlaces[17]  = new place("Florida Tallahassee",1,-5,0,16,"")
 usPlaces[18]  = new place("Georgia Atlanta",1,-5,0,17,"")
 usPlaces[19]  = new place("Hawaii Honolulu",0,-10,0,18,"")
 usPlaces[20]  = new place("Idaho Boise",1,-7,0,19,"")
 usPlaces[21]  = new place("Idaho Moscow",1,-8,0,20,"")
 usPlaces[22]  = new place("Illinois Chicago",1,-6,0,21,"")
 usPlaces[23]  = new place("Indiana Bloomington",0,-5,0,22,"")
 usPlaces[24]  = new place("Indiana Fort Wayne",0,-5,0,23,"")
 usPlaces[25]  = new place("Iowa  Des Moines",1,-6,0,24,"")
 usPlaces[26]  = new place("Kansas Topeka",1,-6,0,25,"")
 usPlaces[27]  = new place("Kentucky Danville",1,-5,0,26,"")
 usPlaces[28]  = new place("Kentucky Louisville",1,-5,0,27,"")
 usPlaces[29]  = new place("Louisiana Baton Rouge",1,-6,0,28,"")
 usPlaces[30]  = new place("Maine Augusta",1,-5,0,29,"")
 usPlaces[31]  = new place("Maryland  Baltimore",1,-5,0,30,"")
 usPlaces[32]  = new place("Massachusetts Boston",1,-5,0,31,"")
 usPlaces[33]  = new place("Michigan Detroit",1,-5,0,32,"")
 usPlaces[34]  = new place("Minnesota Minneapolis",1,-6,0,33,"")
 usPlaces[35]  = new place("Mississippi Jackson",1,-6,0,34,"")
 usPlaces[36]  = new place("Missouri Jefferson",1,-6,0,35,"")
 usPlaces[37]  = new place("Montana Helena",1,-7,0,36,"")
 usPlaces[38]  = new place("Nebraska Lincoln",1,-6,0,37,"")
 usPlaces[39]  = new place("Nevada Carson City",1,-8,0,38,"")
 usPlaces[40]  = new place("New Hampshire Concord",1,-5,0,39,"")
 usPlaces[41]  = new place("New Jersey Trenton",1,-5,0,40,"")
 usPlaces[42]  = new place("New Mexico Albuquerque",1,-7,0,41,"")
 usPlaces[43]  = new place("New York  New York ",1,-5,0,42,"")
 usPlaces[44]  = new place("North Carolina Raleigh",1,-5,0,43,"")
 usPlaces[45]  = new place("North Dakota Bismark",1,-6,0,44,"")
 usPlaces[46]  = new place("Ohio Cleveland",1,-5,0,45,"")
 usPlaces[47]  = new place("Oklahoma Oklahoma City",1,-6,0,46,"")
 usPlaces[48]  = new place("Oregon Portland",1,-8,0,47,"")
 usPlaces[49]  = new place("Pennsylvania Philadelphia",1,-5,0,48,"")
 usPlaces[50]  = new place("Rhode Island  Providence",1,-5,0,49,"")
 usPlaces[51]  = new place("South Carolina Columbia",1,-5,0,50,"")
 usPlaces[52]  = new place("South Dakota Pierre",1,-6,0,51,"")
 usPlaces[53]  = new place("Tennessee Memphis",1,-6,0,52,"")
 usPlaces[54]  = new place("Tennessee Nashville",1,-6,0,53,"")
 usPlaces[55]  = new place("Tennessee Knoxville",1,-5,0,54,"")
 usPlaces[56]  = new place("Texas Austin",1,-6,0,55,"")
 usPlaces[57]  = new place("Texas Dallas",1,-6,0,56,"")
 usPlaces[58]  = new place("Texas Houston",1,-6,0,57,"")
 usPlaces[59]  = new place("Texas El paso",1,-7,0,58,"")
 usPlaces[60]  = new place("Utah Salt Lake City",1,-7,0,59,"")
 usPlaces[61]  = new place("Vermont Montpelier",1,-5,0,60,"")
 usPlaces[62]  = new place("Virginia Richmond",1,-5,0,61,"")
 usPlaces[63]  = new place("Washington Seattle",1,-8,0,62,"")
 usPlaces[64]  = new place("West Virginia Charleston",1,-5,0,63,"")
 usPlaces[65]  = new place("Wisconsin Madison ",1,-6,0,64,"")
 
}

function makeArray(arrayLength)  // 325  
 {
  this.length = arrayLength
  for (i=1; i <= arrayLength; i++)
   this[i] = 0
  return this
 }
 
function month(name, length, index)  
 {
 this.name   = name    // property
 this.length = length  // property
 this.index  = index   // property
 }                                  // 338
function place(name, dual, hrcorr, mincorr, index, curtime)  
 {                                         // 340
 this.name     = name      // property
 this.dual     = dual      // property
 this.hrcorr   = hrcorr    // property
 this.mincorr  = mincorr   // property
 this.index    = index     // property
 this.curtime  = curtime  // property  
 } 
function getFebMonthDays(pyear) //  
{
 if ((pyear % 4 == 0 && pyear % 100 !=0) ||(pyear % 400 ==0))
  return 29
else
  return 28
} 
