function str_repeat(i, m) { for (var o = []; m > 0; o[--m] = i); return(o.join('')); }
function sprintf() {
  var i = 0, a, f = arguments[i++], o = [], m, p, c, x;
  while (f) {
    if (m = /^[^\x25]+/.exec(f)) o.push(m[0]);
    else if (m = /^\x25{2}/.exec(f)) o.push('%');
    else if (m = /^\x25(?:(\d+)\$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(f)) {
      if (((a = arguments[m[1] || i++]) == null) || (a == undefined)) throw("Too few arguments.");
      if (/[^s]/.test(m[7]) && (typeof(a) != 'number'))
        throw("Expecting number but found " + typeof(a));
      switch (m[7]) {
        case 'b': a = a.toString(2); break;
        case 'c': a = String.fromCharCode(a); break;
        case 'd': a = parseInt(a); break;
        case 'e': a = m[6] ? a.toExponential(m[6]) : a.toExponential(); break;
        case 'f': a = m[6] ? parseFloat(a).toFixed(m[6]) : parseFloat(a); break;
        case 'o': a = a.toString(8); break;
        case 's': a = ((a = String(a)) && m[6] ? a.substring(0, m[6]) : a); break;
        case 'u': a = Math.abs(a); break;
        case 'x': a = a.toString(16); break;
        case 'X': a = a.toString(16).toUpperCase(); break;
      }
      a = (/[def]/.test(m[7]) && m[2] && a > 0 ? '+' + a : a);
      c = m[3] ? m[3] == '0' ? '0' : m[3].charAt(1) : ' ';
      x = m[5] - String(a).length;
      p = m[5] ? str_repeat(c, x) : '';
      o.push(m[4] ? a + p : p + a);
    }
    else throw ("Huh ?!");
    f = f.substring(m[0].length);
  }
  return o.join('');
}
var clocksize=20;
var colnumbers='black';
var colseconds='black';
var colminutes='FFFFFF';
var colhours='FFFFFF';
var localZone = 1;
var mytimezone = 0;
var dst = 0;
var fix = 1;
var xpos=0;
var ypos=0;
var pi = Math.PI; 
var pi2 = pi/2; 
var rad = parseInt(clocksize) / 2; 
var ctrX = parseInt(xpos) + rad; 
var ctrY = parseInt(ypos) + rad; 
var hourln = 1; 
var minln = secln = 2; 
for(var i = 0; i < (rad / 2) + (rad / 16); i++) {hourln += 1;} 
for(var i = 0; i < (rad / 2) - (rad / 8); i++) {minln += 2;secln += 2;} 
var font_size = rad / 4; 
var week_names=["","Mon","Tues","Wed","Thurs","Fri","Sat","Sun"];
var month_names=["Jan","Feb","Mar","Apr","May", "June","July","Aug","Sep","Oct","Nov","Dec"];
//var offset = 16; 
var offset = 0; 
function timeZone(now,loc,mtz,dst) {
  if (loc) {
    var dow = now.getDay(); 
    var second = now.getSeconds();
    var minute = now.getMinutes(); 
    var hour = now.getHours();
  } 
  else {
    now.setUTCMinutes(now.getUTCMinutes() + (mtz + dst)*60); 
	var dow = now.getUTCDay(); 
	var second = now.getUTCSeconds(); 
	var minute = now.getUTCMinutes(); 
	var hour = now.getUTCHours();} 
	if (hour > 11) {moa = "PM"; hour -= 12;} 
	else moa = "AM"; 
	return [dow,moa,hour,minute,second];
} 

function updateClock() {
  var d = document; 
  var now = new Date(); 
  var theTime = timeZone(now,localZone,mytimezone,dst); 
  var aSecond = pi * theTime[4] / 30 - pi2; 
  var aMinute = pi * theTime[3] / 30 - pi2; 
  var aHour = pi * theTime[2] / 6 + pi * parseInt(now.getMinutes())/360 - pi2; 
  for (var i = 0; i < minln; i++) {d.getElementById('cmin' + i).style.top = (ctrY + i * Math.sin(aMinute))+'px'; d.getElementById('cmin' + i).style.left = (ctrX + i * Math.cos(aMinute))+'px'; d.getElementById('cmin' + i).style.visibility = 'visible';} 
  for (var i = 0; i < hourln; i++) {d.getElementById('chour' + i).style.top = (ctrY + i * Math.sin(aHour))+'px'; d.getElementById('chour' + i).style.left = (ctrX + i * Math.cos(aHour))+'px'; d.getElementById('chour' + i).style.visibility = 'visible';} setTimeout('updateClock()', 6000);
  var clock_text=week_names[now.getDay()]+" "+sprintf("%02d",now.getDate())+" "+month_names[now.getMonth()]+" "+sprintf("%02d",now.getHours())+":"+sprintf("%02d",now.getMinutes());;
  document.getElementById("clock").innerHTML=clock_text;
  } 
  window.onload = updateClock;
