﻿var length = 35;

var secl = 4;
var minl = 4;
var hurl = 3;

var _top;
var left;

var cl;
var cl2;
var md;

var el = new Array();
var la = new Array();
var un = new Array();
var na = new Array();

function setupClock() {
  var i;
  
  for (i = 0; i < 12; i++)
    document.write('<div id="dot'+i+'" class="dot">&bull;</div>');
  for (i = 1; i < secl; i++)
    document.write('<div id="sec'+i+'" class="dot sec">&bull;</div>');
  for (i = 1; i < minl; i++)
    document.write('<div id="min'+i+'" class="dot min">&bull;</div>');
  for (i = 1; i < hurl; i++)
    document.write('<div id="hur'+i+'" class="dot hur">&bull;</div>');
  
  document.write('<div id="mid" class="dot mid">&bull;</div>');
  
  cl = document.getElementById("analogclock");
  cl2 = document.getElementById("digitalclock");
  md = document.getElementById("mid");
  
  for (i = 0; i < 12; i++)
    el[i] = document.getElementById('dot' + i);
  for (i = 1; i < secl; i++)
    la[i] = document.getElementById("sec" + i);
  for (i = 1; i < minl; i++)
    un[i] = document.getElementById("min" + i);
  for (i = 1; i < hurl; i++)
    na[i] = document.getElementById("hur" + i);
    
  window.setInterval('re();', 1000);
  re();
}

function re() {
  var i;
  
  if (++ns > 59) {
    ns = 0;
    if (++nm > 59) {
      nm = 0;
      if (++nh > 12)
	nh = 1;
      else if (nh == 12)
	na2 = (na2 == 'AM') ? 'PM' : 'AM';
    }
  }
  
  _top = getPositionTop(cl) + length - 6;
  left = getPositionLeft(cl) + length - 6;
  
  // Circle (face)
  for (i = 0; i < 12; i++)
    place_dot(el[i], 4, i/12);
  
  // Hands - minute/hour hand look at the place below them
  // so that they move continously, not ratchety (sp?)
  for (i = 1; i < secl; i++) // Seconds
    place_dot(la[i], i, ns / 60);
  for (i = 1; i < minl; i++) // Minutes
    place_dot(un[i], i, (nm+(ns/60)) / 60);
  for (i = 1; i < hurl; i++) // Hours
    place_dot(na[i], i, (nh+(nm/60)) / 12);
  
  md.style.top = _top;
  md.style.left = left;
  
  cl2.innerHTML = nstTime(nh, nm, ns, na2);
}

function place_dot(dot, position, degrees) {
  position = (length / 4) * position;
  radians = -1.575 + Math.PI * 2 * degrees;
  dot.style.top = _top + (position * Math.sin(radians));
  dot.style.left = left + (position * Math.cos(radians));
}

function nstTime(nh,nm,ns,na) {
  return nh+(ns%2==0?':':'<span style="color:black;">:</span>')+t(nm)+' '+na+' CST';
}

function t(c) {
  if (c < 10)
    return '0'+c;
  
  return c;
}
